// -*- coding: utf-8 -*-
const path = require("path");
const fs = require("fs");
const https = require("https"); // 添加这一行
const puppeteer = require("puppeteer");
const winston = require("winston");
const moment = require("moment-timezone");
let browserCount = 1;
const {
  operateNode,
  swipe,
  getText,
  getAllFiles,
  uploadFilesByXPath,
  getChildPath,
  uploadFilesBySelector,
  buildXPathForText,
  splitString,
  checkExpiration,
  Page_status_window,
} = require("./methods");

// 获取文件夹中的所有文件
function getFilesInDirectory(directory) {
  return fs
    .readdirSync(directory)
    .filter((file) => fs.statSync(path.join(directory, file)).isFile());
}

// 移动文件
const moveFile = (srcPath, destDir) => {
  // 检查目标文件夹是否存在，不存在则创建
  if (!fs.existsSync(destDir)) {
    fs.mkdirSync(destDir, { recursive: true }); // { recursive: true } 允许创建多层文件夹
    console.log(`目标文件夹不存在，已创建: ${destDir}`);
  }

  const destPath = path.join(destDir, path.basename(srcPath));
  fs.renameSync(srcPath, destPath); // 将文件从源路径移动到目标文件夹
  console.log(`文件已移动: ${srcPath} -> ${destPath}`);
};
function sleep(ms) {
  return new Promise((resolve) => setTimeout(resolve, ms));
}
// 定时发布视频
async function scheduleVideoPost(
  page,
  sourceDir,
  destDir,
  targetTime,
  address
) {
  const files = getFilesInDirectory(sourceDir);
  console.log(`准备上传的文件: ${files.join(", ")}`);
  if (files.length === 0) {
    console.log("没有文件可上传，结束操作。");
    return; // 结束当前函数，或者使用 `process.exit()` 来退出整个脚本
  }
  // 点击发表视频
  await operateNode(
    page,
    '//*[@id="container-wrap"]/div[2]/div/div[2]/div[3]/div[1]/div/div[1]/div[2]/div/button'
  );

  // 上传视频
  const filePath = path.posix.join(sourceDir, files[0]);
  const finalFilePath = `./${filePath}`;
  await uploadFilesBySelector(page, 'input[type="file"]', finalFilePath);
  console.log(`文件已上传: ${finalFilePath}`);

  // 等待上传完成
  await page.waitForFunction(() => {
    const element = document.querySelector(".tag-inner");
    return element && element.textContent.trim() === "删除";
  });

  // 上传完成后将文件移动到目标文件夹
  moveFile(filePath, destDir);

  //点开地址
  await operateNode(page, 'div[class="position-display-wrap"]');
  //输入地址
  await operateNode(page, 'input[placeholder="搜索附近位置"]', "输入", address);
  await page.evaluate(() => {
    // 获取所有的 .option-item 元素
    const items = document.querySelectorAll(
      ".common-option-list-wrap .option-item"
    );

    // 遍历这些选项，找到第一个不包含 "不显示位置" 的元素并点击
    for (let item of items) {
      const name = item.querySelector(".location-item-info .name").textContent;
      if (name !== "不显示位置") {
        item.click();
        break;
      }
    }
  });

  // 设置定时发布
  await operateNode(page, await buildXPathForText(page, "定时"));
  await operateNode(page, 'input[placeholder="请选择发表时间"]');

  // 设置目标时间（年月日时分）
  const [targetYear, targetMonth, targetDate, targetHour, targetMinute] =
    targetTime.split("-");

  // 选择年份
  await page.click(".weui-desktop-picker__panel__hd span:nth-child(2)");
  sleep(1000);
  const yearElements = await page.$$(
    ".weui-desktop-picker__panel__bd .weui-desktop-picker__table-row a"
  );
  for (let yearElement of yearElements) {
    const yearText = await page.evaluate(
      (el) => el.textContent.trim(),
      yearElement
    );
    const isDisabled = await page.evaluate(
      (el) => el.classList.contains("weui-desktop-picker__disabled"),
      yearElement
    );

    if (isDisabled) continue;
    if (yearText === targetYear) {
      await yearElement.click();
      console.log(`点击年份: ${yearText}`);
      break;
    }
  }
  sleep(1000);
  // 选择月份
  const monthElements = await page.$$(
    ".weui-desktop-picker__panel__bd .weui-desktop-picker__table-row a"
  );
  sleep(1000);
  for (let monthElement of monthElements) {
    const monthText = await page.evaluate(
      (el) => el.textContent.trim(),
      monthElement
    );
    const isDisabled = await page.evaluate(
      (el) => el.classList.contains("weui-desktop-picker__disabled"),
      monthElement
    );
    if (isDisabled) continue;
    if (monthText === targetMonth) {
      await monthElement.click();
      console.log(`点击月份: ${monthText}`);
      break;
    }
  }
  sleep(1000);
  // 选择日期
  const dateElements = await page.$$(`${".weui-desktop-picker__table-row a"}`);
  for (let dateElement of dateElements) {
    const dateText = await page.evaluate(
      (el) => el.textContent.trim(),
      dateElement
    );
    const isDisabled = await page.evaluate(
      (el) => el.classList.contains("weui-desktop-picker__disabled"),
      dateElement
    );

    if (isDisabled) continue;
    if (dateText === targetDate) {
      await dateElement.click();
      console.log(`点击日期: ${dateText}`);
      break;
    }
  }
  sleep(1000);
  // 选择小时和分钟
  await page.click('input[placeholder="请选择时间"]');
  await page.waitForSelector(".weui-desktop-picker__time__hour");
  await page.waitForSelector(".weui-desktop-picker__time__minute");

  // 选择小时
  const hours = await page.$$(
    `ol.weui-desktop-picker__time__hour li:not(.weui-desktop-picker__disabled)`
  );
  for (let hour of hours) {
    const hourText = await page.evaluate((el) => el.textContent.trim(), hour);
    if (hourText === targetHour) {
      await hour.click();
      console.log(`选择小时: ${hourText}`);
      break;
    }
  }
  sleep(1000);
  // 选择分钟
  const minutes = await page.$$(
    `ol.weui-desktop-picker__time__minute li:not(.weui-desktop-picker__disabled)`
  );
  for (let minute of minutes) {
    const minuteText = await page.evaluate(
      (el) => el.textContent.trim(),
      minute
    );
    if (minuteText === targetMinute) {
      await minute.click();
      console.log(`选择分钟: ${minuteText}`);
      break;
    }
  }
  sleep(1000);
  await operateNode(page, await buildXPathForText(page, "发表时间"));
  // 输入视频标题
  console.log("输入标题");
  await operateNode(
    page,
    'input[placeholder="概括视频主要内容，字数建议6-16个字符"]',
    "输入",
    "测试你的鼠标怎么样"
  );

  // 点击发布
  console.log("点击发布");
  // await operateNode(page, await buildXPathForText(page, "发表"));
  const buttons = await page.$$(".weui-desktop-btn.weui-desktop-btn_primary");

  // 遍历所有按钮并根据按钮文本进行选择
  for (let button of buttons) {
    const text = await page.evaluate((el) => el.textContent.trim(), button);

    // 检查文本是否符合你要点击的文本（例如：'发表'）
    if (text === "发表") {
      await button.click(); // 点击该按钮
      break; // 找到后跳出循环
    }
  }
  console.log("视频已发布");
}
const dataUriToBuffer = (dataUri) => {
  const matches = dataUri.match(/^data:(.+?);base64,(.+)$/);
  if (matches && matches.length === 3) {
    return Buffer.from(matches[2], "base64");
  }
  throw new Error("Invalid data URI");
};
const dataUriToBase64 = (dataUri) => {
  const matches = dataUri.match(/^data:(.+?);base64,(.+)$/);
  if (matches && matches.length === 3) {
    return matches[2]; // 返回纯 base64 数据
  }
  throw new Error("Invalid data URI");
};

// 用于生成随机时间的函数
function getRandomTimeInRange(startDate, endDate) {
  // 计算时间差，单位为毫秒
  const timeDiff = endDate - startDate;

  // 在这个时间区间内生成一个随机值（以毫秒为单位）
  const randomTime = startDate.getTime() + Math.random() * timeDiff;

  // 返回新的 Date 对象
  return new Date(randomTime);
}
// 格式化 Date 对象为 "YYYY-M-D-H-m" 格式（不加前导零）
function formatDateToString(date) {
  const year = date.getFullYear();
  const month = date.getMonth() + 1; // 月份从0开始，需要加1
  const day = date.getDate();
  const hour = date.getHours();
  const minute = date.getMinutes();

  return `${year}-${month}-${day}-${hour}-${minute}`;
}
const logDir = path.join(__dirname, "logs");
if (!fs.existsSync(logDir)) {
  fs.mkdirSync(logDir);
}

const logFilePath = path.join(logDir, "app.log");

// 配置 winston 日志记录器
const logger = winston.createLogger({
  level: "info", // 设置最低日志级别为 info
  format: winston.format.combine(
    winston.format.timestamp({
      format: () => moment().tz("Asia/Shanghai").format("YYYY-MM-DD HH:mm:ss"), // 设置时间为中国时间
    }),
    winston.format.simple()
  ),
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({ filename: logFilePath }),
  ],
});

logger.info("日志系统启动");
(async () => {
  // const browserPath = "C:/Program Files/Google/Chrome/Application/chrome.exe"; // Chrome 路径
  
  const userDataDir = path.resolve(process.cwd(), `user_data_${0}`); // 每个浏览器使用独立的数据目录
  const browserPath = path.join(__dirname, "chrome-win64", "chrome.exe"); // Chrome 路径
  const browser = await puppeteer.launch({
    headless: false, // 显示浏览器窗口
    executablePath: browserPath, // 使用指定的 Chrome 浏览器路径
    // userDataDir, // 使用独立的用户数据目录
    args: ["--no-sandbox", "--disable-setuid-sandbox"],
    defaultViewport: { width: 1980, height: 900 },
  });
  const page = await browser.newPage();
  await page.goto("https://seller.kuajingmaihuo.com/", {
    waitUntil: "networkidle0", // 确保页面加载完成
  });
  // await operateNode(page, await buildXPathForText(page, "互动管理"));
  // await operateNode(page, await buildXPathForText(page, "私信"));
  // // await page.frames().map((frame) => {
  // //   console.log(frame.url());
  // //   // console.log(frame);
  // // });
  // // 获取所有 iframe 元素
  // const frameHandles = await page.$$('iframe');
  // if (frameHandles) {
  //   const frame = await frameHandles[0].contentFrame();

  //   // 在 iframe 中执行查询并点击
  //   await frame.evaluate(() => {
  //     const element = document.querySelector('.session-wrap');
  //     if (element) {
  //       element.click();  // 点击元素
  //     }
  //   });
  // } else {
  //   console.log('没有足够的 iframe 元素');
  // }

  // checkSessionWrapInIframes(page);
  // await sleep(5000);
  // await operateNode(page, await buildXPathForText(page, "打招呼消息"));
  async function massage_sent(page, massage) {
    await page.goto("https://channels.weixin.qq.com/platform", {
      waitUntil: "networkidle0", // 确保页面加载完成
    });
  
    // 操作 '互动管理' 和 '私信' 的链接
    await operateNode(page, await buildXPathForText(page, "互动管理"));
    await operateNode(page, await buildXPathForText(page, "私信"));
  
    await sleep(5000); // 等待页面加载
  
    // 获取所有 iframe 元素
    const frameHandles = await page.$$("iframe");
    if (frameHandles && frameHandles.length > 0) {
      const frame = await frameHandles[0].contentFrame();
  
      // 在 iframe 中滚动类名为 scroll-list 的容器
      await frame.evaluate(() => {
        const greetingMessageElement = Array.from(
          document.querySelectorAll("a")
        ).find((el) => el.textContent.includes("打招呼消息"));
        // if (greetingMessageElement) {
        //   greetingMessageElement.click();
        // } else {
        //   console.log("没有找到“打招呼消息”链接");
        // }
        const scrollList = document.querySelector(".scroll-list");
        if (scrollList) {
          scrollList.scrollTop = scrollList.scrollHeight; // 滚动到容器底部
        }
      });
  
      // 等待滚动效果完成（可以根据页面的具体情况调整延时）
      await sleep(3000);
  
      // 在 iframe 中操作元素并点击所有符合条件的元素
      await frame.evaluate(async (massage) => {
        // 将 massage 按空格拆分成数组
        const massageArray = massage.split(" ");
  
        const elements = document.querySelectorAll(".session-wrap");
        console.log("elements", elements);
  
        for (let element of elements) {
          try {
            // 随机选择一个消息
            const randomMassage =
              massageArray[Math.floor(Math.random() * massageArray.length)];
  
            console.log("随机选择的消息：", randomMassage);
            // 点击每个元素
            element.click();
            // 等待页面更新的时间，确保点击后页面响应
            await new Promise((resolve) => setTimeout(resolve, 1000)); // 1秒钟等待，可以根据实际情况调整时间
  
            // 查找textarea并输入内容
            const textarea = document.querySelector(".edit_area");
            if (textarea) {
              // 聚焦到textarea
              textarea.focus();
  
              // 清空textarea的内容（如果需要的话）
              textarea.value = "";
              console.log("massage", randomMassage);
              // 输入消息
              textarea.value = randomMassage; // 直接赋值到textarea中
  
              // 触发输入事件（模拟用户输入）
              const event = new Event("input", { bubbles: true });
              textarea.dispatchEvent(event);
  
              // 等待输入完成，确保内容已被输入
              await new Promise((resolve) => setTimeout(resolve, 500)); // 可以根据需要调整时间
            } else {
              console.error("没有找到textarea 元素");
            }
  
            // 查找并点击按钮
            const button = document.querySelector(
              ".weui-desktop-btn.weui-desktop-btn_default"
            );
            if (button) {
              button.click();
            } else {
              console.error("没有找到按钮元素");
            }
          } catch (err) {
            console.error(`处理元素时发生错误: ${err}`);
          }
        }
      }, massage);
    } else {
      console.log("没有足够的 iframe 元素");
    }
  
    return true;
  }

  // massage_sent(page, "666 777 888 999 6645 4687");

  //发表视频
  // await operateNode(
  //   page,
  //   '//*[@id="container-wrap"]/div[2]/div/div[2]/div[3]/div[1]/div/div[1]/div[2]/div/button'
  // );

  // //点开地址
  // await operateNode(page, 'div[class="position-display-wrap"]');
  // //输入地址
  // await operateNode(
  //   page,
  //   'input[placeholder="搜索附近位置"]',
  //   "输入",
  //   "人民政府"
  // );
  // await page.evaluate(() => {
  //   // 获取所有的 .option-item 元素
  //   const items = document.querySelectorAll(
  //     ".common-option-list-wrap .option-item"
  //   );

  //   // 遍历这些选项，找到第一个不包含 "不显示位置" 的元素并点击
  //   for (let item of items) {
  //     const name = item.querySelector(".location-item-info .name").textContent;
  //     if (name !== "不显示位置") {
  //       item.click();
  //       break;
  //     }
  //   }
  // });

  // const executablePath = browser.process().spawnfile;
  // console.log('Puppeteer 使用的 Chromium 路径:', executablePath);
  // logger.info("日志测试");
  // logger.error("错误测试");

  // await operateNode(
  //   page,
  //   '//*[@id="container-wrap"]/div[2]/div/div[2]/div[3]/div[1]/div/div[1]/div[2]/div/button'
  // );
  // await operateNode(
  //   page,
  //   'div[data-placeholder="添加描述"]',
  //   "输入",
  //   "测试"
  // );

  // await operateNode(page, await buildXPathForText(page, "互动管理"));
  // await operateNode(page, await buildXPathForText(page, "私信"));
  // await page.waitForSelector('.session-wrap');  // 确保元素加载

  // // 滚动父容器
  // await page.evaluate(() => {
  //   // 获取父容器
  //   const parentContainer = document.querySelector('.session-wrap').parentElement;  // 获取第一个 session-wrap 的父容器

  //   if (parentContainer) {
  //     // 滚动到容器底部
  //     console.log("滚动")
  //     parentContainer.scrollTop = parentContainer.scrollHeight;
  //   }
  // });

  // // await operateNode(page, await buildXPathForText(page, "打招呼消息"));
  // const sessionWraps = await page.$$(".session-wrap");

  // for (let i = 0; i < sessionWraps.length; i++) {
  //   // 获取每个 session-wrap 内部的点击目标元素 (比如点击头像或其他)
  //   const target = await sessionWraps[i].$("div.avatar"); // 可以修改选择器以匹配你要点击的元素

  //   // 点击该元素
  //   if (target) {
  //     await target.click();
  //     console.log(`点击了第 ${i + 1} 个 session-wrap`);
  //     const textarea = await page.$("textarea.edit_area"); // 使用正确的选择器来定位textarea
  //     if (textarea) {
  //       // 清空输入框（如果有需要的话）
  //       await textarea.click({ clickCount: 3 }); // 选择所有内容
  //       await page.keyboard.press("Backspace"); // 删除现有内容

  //       // 输入新的内容
  //       await textarea.type("你好a "); // 输入文本
  //       console.log("在textarea中输入了内容");

  //       // await operateNode(page,await buildXPathForText(page,"发送"));
  //       const buttonText = "发送"; // 按钮上显示的文本
  //       await page.evaluate((buttonText) => {
  //         const buttons = Array.from(document.querySelectorAll("button")); // 获取所有按钮
  //         const targetButton = buttons.find(
  //           (button) => button.textContent.trim() === buttonText
  //         ); // 查找文本匹配的按钮
  //         if (targetButton) {
  //           targetButton.click(); // 点击按钮
  //         }
  //       }, buttonText);
  //       await sleep(1000);
  //     }
  //     // 可以添加一些等待，确保页面加载完成

  //     // 如果你需要做其他操作，如获取信息、截图等，可以在这里处理
  //   }
  // }

  // const files = getFilesInDirectory('./video/test');
  // console.log(`准备上传的文件: ${files.join(", ")}`);
  // if (files.length === 0) {
  //   console.log("没有文件可上传，结束操作。");
  //   return; // 结束当前函数，或者使用 `process.exit()` 来退出整个脚本
  // }
  // const filename = files[0];
  // const filePath = path.posix.join('./video/test', files[0]);
  // const finalFilePath = `./${filePath}`;
  // moveFile(filePath, './used/test');

  // const taskDetails = {
  //   date: "2024-12-17",
  //   startTime: "00:10",
  //   endTime: "04:53",
  //   description: "测试",
  //   folder: "test",
  //   message: "",
  // };

  // const date = taskDetails.date;
  // const startTime = taskDetails.startTime;
  // const endTime = taskDetails.endTime;

  // // 使用本地时区创建 Date 对象
  // const startDate = new Date(`${taskDetails.date}T${taskDetails.startTime}:00`);
  // const endDate = new Date(`${taskDetails.date}T${taskDetails.endTime}:00`);

  // console.log("开始与结束时间", startDate, endDate);

  // // 获取随机时间
  // let randomTime = getRandomTimeInRange(startDate, endDate);
  // console.log("随机时间", randomTime);

  // // 格式化随机时间为 "YYYY-M-D-H-m" 格式（不加前导零）
  // let formattedRandomTime = formatDateToString(randomTime);
  // console.log("格式化随机时间", formattedRandomTime);

  // let file_if = false;
  // let quantity = 1;
  // let interval = 50;

  // for (let i = 0; i < quantity; i++) {
  //   // 每次循环时，将 formattedRandomTime 转换为 Date 对象
  //   let dateObj = new Date(randomTime);

  //   // 增加 interval 分钟

  //   // 格式化为本地时区
  //   formattedRandomTime = formatDateToString(dateObj);
  //   console.log("本次时间", formattedRandomTime);
  //   dateObj.setMinutes(dateObj.getMinutes() + interval);
  //   // 设置定时发布
  //   await operateNode(page, await buildXPathForText(page, "定时"));
  //   await operateNode(page, 'input[placeholder="请选择发表时间"]');
  //   let targetTime = formattedRandomTime;
  //   // 设置目标时间（年月日时分）
  //   let [targetYear, targetMonth, targetDate, targetHour, targetMinute] =
  //     targetTime.split("-");

  //   // 选择年份
  //   await page.click(".weui-desktop-picker__panel__hd span:nth-child(2)");
  //   const yearElements = await page.$$(
  //     ".weui-desktop-picker__panel__bd .weui-desktop-picker__table-row a"
  //   );
  //   sleep(1000)
  //   for (let yearElement of yearElements) {
  //     const yearText = await page.evaluate(
  //       (el) => el.textContent.trim(),
  //       yearElement
  //     );
  //     const isDisabled = await page.evaluate(
  //       (el) => el.classList.contains("weui-desktop-picker__disabled"),
  //       yearElement
  //     );

  //     if (isDisabled) continue;
  //     if (yearText === targetYear) {
  //       await yearElement.click();
  //       console.log(`点击年份: ${yearText}`);
  //       break;
  //     }
  //   }
  //   sleep(1000)
  //   // 选择月份
  //   const monthElements = await page.$$(
  //     ".weui-desktop-picker__panel__bd .weui-desktop-picker__table-row a"
  //   );
  //   for (let monthElement of monthElements) {
  //     const monthText = await page.evaluate(
  //       (el) => el.textContent.trim(),
  //       monthElement
  //     );
  //     const isDisabled = await page.evaluate(
  //       (el) => el.classList.contains("weui-desktop-picker__disabled"),
  //       monthElement
  //     );
  //     if (isDisabled) continue;
  //     if (monthText === targetMonth) {
  //       await monthElement.click();
  //       console.log(`点击月份: ${monthText}`);
  //       break;
  //     }
  //   }
  //   sleep(1000)
  //   // 选择日期
  //   const dateElements = await page.$$(
  //     `${".weui-desktop-picker__table-row a"}`
  //   );
  //   for (let dateElement of dateElements) {
  //     const dateText = await page.evaluate(
  //       (el) => el.textContent.trim(),
  //       dateElement
  //     );
  //     const isDisabled = await page.evaluate(
  //       (el) => el.classList.contains("weui-desktop-picker__disabled"),
  //       dateElement
  //     );

  //     if (isDisabled) continue;
  //     if (dateText === targetDate) {
  //       await dateElement.click();
  //       console.log(`点击日期: ${dateText}`);
  //       break;
  //     }
  //   }
  //   sleep(1000)
  //   // 选择小时和分钟
  //   await page.click('input[placeholder="请选择时间"]');
  //   await page.waitForSelector(".weui-desktop-picker__time__hour");
  //   await page.waitForSelector(".weui-desktop-picker__time__minute");
  //   targetHour = targetHour.padStart(2, '0');
  //   // 选择小时
  //   const hours = await page.$$(
  //     `ol.weui-desktop-picker__time__hour li:not(.weui-desktop-picker__disabled)`
  //   );
  //   for (let hour of hours) {
  //     const hourText = await page.evaluate((el) => el.textContent.trim(), hour);
  //     console.log(`检查小时: ${hourText}`);
  //     if (hourText === targetHour) {
  //       await hour.click();
  //       console.log(`选择小时: ${hourText}`);
  //       break;
  //     }
  //   }
  //   sleep(1000)
  //   // 选择分钟
  //   const minutes = await page.$$(
  //     `ol.weui-desktop-picker__time__minute li:not(.weui-desktop-picker__disabled)`
  //   );
  //   targetMinute = targetMinute.padStart(2, '0');
  //   for (let minute of minutes) {
  //     const minuteText = await page.evaluate(
  //       (el) => el.textContent.trim(),
  //       minute
  //     );
  //     console.log(`检查分钟: ${minuteText}`);
  //     if (minuteText === targetMinute) {
  //       await minute.click();
  //       console.log(`选择分钟: ${minuteText}`);
  //       break;
  //     }
  //   }
  //   sleep(1000)
  //   await operateNode(page, await buildXPathForText(page, "发表时间"));

  //   // 更新 randomTime 为当前的时间，用于下一次循环
  //   randomTime = dateObj;
  // }

  // // 获取随机时间区间内的一个随机时间（确保返回的是本地时区时间）
  // function getRandomTimeInRange(start, end) {
  //   const diff = end - start;
  //   const randomOffset = Math.floor(Math.random() * diff);
  //   return new Date(start.getTime() + randomOffset);
  // }

  // // 格式化日期为 "YYYY-M-D-H-m" 格式（不加前导零）
  // function formatDateToString(date) {
  //   const year = date.getFullYear();
  //   const month = date.getMonth() + 1; // 月份是从 0 开始的
  //   const day = date.getDate();
  //   const hours = date.getHours();
  //   const minutes = date.getMinutes();
  //   return `${year}-${month}-${day}-${hours}-${minutes}`;
  // }

  // await page.waitForSelector('.qrcode');
  // await delay(10000);
  // 等待 iframe 加载
  // const iframeElement = await page.waitForSelector("iframe.display"); // 找到 iframe 元素
  // const iframe = await iframeElement.contentFrame(); // 获取 iframe 的 Frame 对象

  // // 等待二维码图片加载
  // await iframe.waitForSelector(".qrcode", { visible: true, timeout: 10000 });

  // const qrCodeSrc = await iframe.$eval(".qrcode", (img) => img.src);

  // // 从数据 URL 中提取 Base64 部分
  // const base64Data = qrCodeSrc.split(",")[1]; // 去掉前面的 'data:image/png;base64,' 部分

  // // 将图片数据保存到本地文件
  // const buffer = Buffer.from(base64Data, "base64");
  // fs.writeFile("qrCodeImage.png", buffer, (err) => {
  //   if (err) {
  //     console.error("保存图片失败:", err);
  //   } else {
  //     console.log("图片保存成功！");
  //   }
  // });
  // await scheduleVideoPost(page, "./video/test", "./used/test", "2025-1-1-18-31");

  // //点击发表
  // await operateNode(page, await buildXPathForText(page, "发表"));

  // //点击互动管理
  // await operateNode(page, await buildXPathForText(page, "互动管理"));
  // //点击私信
  // await operateNode(page, await buildXPathForText(page, "私信"));
  // //打招呼消息
  // await operateNode(page, await buildXPathForText(page, "打招呼消息"));
})();
